#pragma once

// Dependencies
#include <memory>
namespace Core {
	template<class T> class Transform3_t;
	template<class T> class Vector3_t;
	template<class T> class Vector2_t;
}
namespace Model {
	class Mesh;
}

namespace Model {
	class MeshFactory {
	public:
		~MeshFactory();

	public:
		std::shared_ptr<Mesh> createRobot( const Core::Transform3_t<float>& t );
		std::shared_ptr<Mesh> createBox( const Core::Transform3_t<float>& t, const Core::Vector3_t<float>& dimensions );
		
		std::shared_ptr<Mesh> createTable( 
			const Core::Transform3_t<float>& t, 
			const Core::Vector3_t<float>& dimensions, 
			float thickness, 
			const Core::Vector2_t<float>& legDimensions, 
			Core::Vector2_t<float>& legSeparation 
		);
	};
}